关于"xmlhttp.readyState=0"的问题,老是返回0

来源:百度知道 编辑:UC知道 时间:2024/05/06 18:55:34
下面关于xmlhttp的程序老是返回0而不是4,错在哪里呢?

function getXMLR2()
{
var xmlhttp2,alerted
try {
xmlhttp2=new ActiveXObject("Msxml2.XMLHTTP")
} catch (e) {
try {
xmlhttp2=new ActiveXObject("Microsoft.XMLHTTP")
} catch (E) {
alert("请安装Microsofts XML parsers")
}
}
if (!xmlhttp2 && !alerted) {
try {
xmlhttp2 = new XMLHttpRequest();
} catch (e) {
alert("你的浏览器不支持XMLHttpRequest对象,请升级");
}
}
return xmlhttp2;
}

function getDATA2(name)
{
var xmlhttp2 = getXMLR2();
if (xmlhttp2){
var gourl = "jym.asp?userid="+userid1.value;
xmlhttp2.Open("POST",gourl,true);
xmlhttp2.onreadystatechange = showDATA2;
xmlhttp2.send();
}
}

function showDATA2()
{
var xmlhttp2 = getXMLR2();
var http_request2=xmlhttp2;
if (http_request2.readyState==4)
{ a

你在function showDATA2()方法中通过getXMLR2()获得的对象function getDATA2(name) 方法中var xmlhttp2 = getXMLR2(); 不是同一个,所以showDATA2()方法中的xmlhttp2对象是一个没有建立连接,发送请求的XMLHttpRequest 对象,所以你的readyState=0;没有建立连接。
你应该把var xmlhttp2设为全局变量,不是在方法里声明的那种,然后各个方法操作的才是同一个对象。

没听过javascript里的方法还分公用 私用的,我写的你能看懂不?

xmlHttp.status返回当前请求的http状态码,此属性仅当数据发送并接收完毕后才可获取,但是在返回的长整形中并没有0,所以应该是你创建xmlhttp的时候就出了问题,也就是说没有发送到服务器或者服务器没做处理